package 右旋字符串;

import java.util.Arrays;

public class Solution {

    /*
    字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如，输入字符串"abcdefg"和数字2，该函数将返回左旋转两位得到的结果"cdefgab"。
    示例 1：
    输入: s = "abcdefg", k = 2
    输出: "cdefgab"
    示例 2：
    输入: s = "lrloseumgh", k = 6
    输出: "umghlrlose"
      限制：
    1 <= k < s.length <= 10000
     */
    public String reverseLeftWords(String s, int k) {
        // 反转字符串的思路
        char[] sCharArray = s.toCharArray();
        // 1.反转整个字符串
        reverse(sCharArray, 0, sCharArray.length - 1);
        // 2.反转 前s.length-k 个字符
        reverse(sCharArray, 0, sCharArray.length - 1 - k);
        // 3.反转 后k 个字符
        reverse(sCharArray, sCharArray.length - k, s.length() - 1);
        return Arrays.toString(sCharArray);
    }

    public void reverse(char[] s, int left, int right) {
        while (left < right) {
            char temp = s[left];
            s[left] = s[right];
            s[right] = temp;
            left++;
            right--;
        }
    }
}
